#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
垃圾分类科普知识数据初始化脚本
用于向数据库中插入默认的科普知识文章
"""

import os
import sys
from datetime import datetime

# 添加当前目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from app import app, db, KnowledgeArticle, User

def init_knowledge_data():
    """初始化科普知识数据"""
    with app.app_context():
        # 检查是否已有科普知识数据
        existing_count = KnowledgeArticle.query.count()
        if existing_count > 0:
            print(f"数据库中已存在 {existing_count} 条科普知识数据")
            choice = input("是否要清空现有数据并重新插入？(y/N): ")
            if choice.lower() != 'y':
                print("操作已取消")
                return
            
            # 清空现有数据
            KnowledgeArticle.query.delete()
            db.session.commit()
            print("已清空现有科普知识数据")
        
        # 确保有管理员用户
        admin_user = User.query.filter_by(role='admin').first()
        if not admin_user:
            admin_user = User.query.first()
            if not admin_user:
                print("错误：数据库中没有用户，请先创建管理员用户")
                return
        
        # 科普知识数据
        knowledge_articles = [
            # 可回收垃圾类别
            {
                'title': '可回收垃圾分类指南',
                'content': '''可回收垃圾是指适宜回收和资源利用的垃圾，主要包括：

**纸类：**
- 报纸、杂志、图书、各种包装纸
- 办公用纸、广告纸片
- 纸盒、纸箱等

**塑料：**
- 各种塑料袋、塑料包装物
- 塑料容器、塑料玩具
- 泡沫塑料、塑料餐具等

**金属：**
- 易拉罐、铁皮罐头盒
- 废铁、废铜、废铝等

**玻璃：**
- 玻璃瓶、玻璃杯
- 窗玻璃、镜子等

**织物：**
- 旧纺织衣物、纺织制品
- 废弃衣服、包、鞋等

**注意事项：**
投放前请清洁干净，去除食物残渣，保持干燥。''',
                'category': '可回收垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '塑料制品回收小贴士',
                'content': '''塑料制品是可回收垃圾的重要组成部分，正确分类有助于资源循环利用：

**可回收的塑料：**
- PET塑料瓶（矿泉水瓶、饮料瓶）
- HDPE塑料（洗发水瓶、清洁剂瓶）
- PP塑料（酸奶盒、微波炉餐盒）
- PS塑料（泡沫餐盒、一次性杯子）

**回收前处理：**
1. 清洗干净，去除标签
2. 压扁节省空间
3. 瓶盖可以拧紧一起回收

**不可回收的塑料：**
- 污染严重的塑料袋
- 复合材料包装
- 热固性塑料制品

**环保价值：**
1公斤废塑料可回炼600克柴油，回收利用塑料既能减少环境污染，又能节约石油资源。''',
                'category': '可回收垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '纸类回收的正确方法',
                'content': '''纸类是最常见的可回收垃圾，正确处理能最大化回收价值：

**高价值纸类：**
- 白纸、报纸、杂志
- 纸板箱、包装盒
- 书籍、笔记本

**中等价值纸类：**
- 彩色纸张、广告单
- 信封、便签纸
- 纸袋、包装纸

**处理要点：**
1. 去除塑料薄膜、胶带
2. 撕掉不干胶标签
3. 保持干燥，避免受潮
4. 按类型分开存放

**不可回收的纸类：**
- 卫生纸、餐巾纸
- 复写纸、蜡纸
- 污染严重的纸张

**回收意义：**
回收1吨废纸可生产0.8吨新纸，节约木材3立方米，节水100立方米。''',
                'category': '可回收垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            
            # 有害垃圾类别
            {
                'title': '有害垃圾处理须知',
                'content': '''有害垃圾是指对人体健康或自然环境造成直接或潜在危害的垃圾，主要包括：

**电池类：**
- 充电电池、纽扣电池
- 蓄电池等各类电池

**灯管类：**
- 荧光灯管、节能灯
- LED灯等含汞灯具

**药品类：**
- 过期药品、药品包装
- 医疗器械等

**化学品：**
- 油漆、涂料及其包装物
- 杀虫剂、消毒剂
- 胶水、指甲油等

**电子产品：**
- 废旧手机、电脑
- 打印机墨盒、硒鼓等

**处理要求：**
有害垃圾应单独收集，不可混入其他垃圾中，投放到专门的有害垃圾收集点。''',
                'category': '有害垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '废旧电池的危害与处理',
                'content': '''废旧电池是典型的有害垃圾，含有多种重金属和化学物质：

**电池的危害：**
- 汞：损害神经系统
- 镉：引起肾脏疾病
- 铅：影响智力发育
- 酸碱物质：腐蚀土壤

**常见电池类型：**
- 碱性电池（5号、7号电池）
- 纽扣电池（手表、遥控器）
- 充电电池（手机、笔记本）
- 汽车电池（铅酸蓄电池）

**正确处理方法：**
1. 分类收集，避免破损
2. 投放到专门回收点
3. 不要随意丢弃
4. 大型电池联系专业机构

**环保提醒：**
一粒纽扣电池可污染60万升水，相当于一个人一生的饮水量。''',
                'category': '有害垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '过期药品安全处置指南',
                'content': '''过期药品属于有害垃圾，需要特殊处理以保护环境和健康：

**过期药品的危害：**
- 药效降低或失效
- 产生有毒物质
- 污染水源和土壤
- 被误用造成中毒

**常见过期药品：**
- 片剂、胶囊类药物
- 液体药剂、糖浆
- 外用药膏、滴眼液
- 中药材、中成药

**处理步骤：**
1. 检查药品有效期
2. 分离包装和说明书
3. 液体药品不要倒入下水道
4. 送到药店或医院回收点

**预防措施：**
- 定期清理家庭药箱
- 按需购买，避免囤积
- 注意储存条件
- 建立用药记录''',
                'category': '有害垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            
            # 厨余垃圾类别
            {
                'title': '厨余垃圾分类要点',
                'content': '''厨余垃圾是指家庭、餐厅、食堂、市场等产生的食物残余和食品加工废料，主要包括：

**食材废料：**
- 菜叶、菜根、果皮
- 蛋壳、鱼骨、肉骨等

**剩菜剩饭：**
- 米饭、面条等主食
- 汤汤水水、调料等

**过期食品：**
- 过期的面包、饼干
- 变质的水果、蔬菜等

**其他厨余：**
- 茶叶渣、咖啡渣
- 中药渣等

**投放要求：**
1. 沥干水分后投放
2. 有包装的需要去除包装
3. 大块骨头建议敲碎
4. 不要混入餐具、纸巾等

**处理价值：**
厨余垃圾经过处理可以制成有机肥料，实现资源循环利用。''',
                'category': '厨余垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '果皮蔬菜废料的妙用',
                'content': '''果皮蔬菜废料是厨余垃圾的主要成分，合理利用能变废为宝：

**可堆肥的果蔬废料：**
- 苹果皮、香蕉皮、橘子皮
- 白菜叶、萝卜皮、土豆皮
- 西瓜皮、冬瓜皮等

**家庭堆肥方法：**
1. 切碎果蔬废料
2. 与干叶子、纸屑混合
3. 保持适当湿度
4. 定期翻动通气
5. 2-3个月后成为有机肥

**其他妙用：**
- 柠檬皮：天然清洁剂
- 茶叶渣：除臭、养花
- 咖啡渣：驱虫、去异味
- 蛋壳：补充钙质、研磨清洁

**注意事项：**
避免放入肉类、油脂类废料，防止招引害虫和产生异味。''',
                'category': '厨余垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '餐厨垃圾减量小窍门',
                'content': '''减少餐厨垃圾产生是垃圾分类的重要环节：

**源头减量：**
- 按需采购，避免过量
- 合理搭配，营养均衡
- 先进先出，减少浪费
- 创意料理，物尽其用

**储存技巧：**
- 正确储存延长保鲜期
- 分类储存避免串味
- 定期清理冰箱
- 标注日期便于管理

**烹饪建议：**
- 适量烹饪，避免剩余
- 巧用边角料制作小菜
- 骨头汤充分利用营养
- 果蔬皮制作酵素

**剩余处理：**
- 剩菜改造成新菜品
- 面包屑制作面包糠
- 蔬菜根茎二次利用
- 合理分享避免浪费

**环保意义：**
减少1公斤厨余垃圾，相当于减少0.3公斤二氧化碳排放。''',
                'category': '厨余垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            
            # 其他垃圾类别
            {
                'title': '其他垃圾识别方法',
                'content': '''其他垃圾是指除可回收垃圾、有害垃圾、厨余垃圾之外的生活垃圾，主要包括：

**卫生用品：**
- 卫生纸、纸尿裤
- 卫生巾、湿纸巾等

**陶瓷制品：**
- 破碎的陶瓷、瓷器
- 花盆、瓦片等

**灰土类：**
- 烟蒂、煤渣
- 建筑垃圾、灰土等

**复合材料：**
- 污损的塑料袋
- 胶带、贴纸
- 保鲜膜等

**其他难分类物品：**
- 头发、宠物粪便
- 猫砂、尘土等

**判断原则：**
当不确定垃圾属于哪一类时，可以按照"其他垃圾"处理。其他垃圾一般采用卫生填埋或焚烧发电的方式处理。

**投放提示：**
尽量沥干水分，避免包装袋破损造成二次污染。''',
                'category': '其他垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '一次性用品的环保替代',
                'content': '''一次性用品大多属于其他垃圾，减少使用是环保的重要举措：

**常见一次性用品：**
- 塑料袋、塑料餐具
- 纸杯、纸盘、吸管
- 湿纸巾、纸巾
- 一次性雨衣、手套

**环保替代方案：**
- 购物袋 → 环保布袋
- 塑料餐具 → 不锈钢餐具
- 纸杯 → 保温杯
- 塑料吸管 → 不锈钢吸管
- 湿纸巾 → 可洗毛巾

**减量策略：**
1. 外出自带餐具和水杯
2. 拒绝不必要的包装
3. 选择可重复使用的产品
4. 支持环保包装的商家

**经济效益：**
- 长期使用成本更低
- 减少垃圾处理费用
- 提升生活品质
- 培养环保意识''',
                'category': '其他垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '破损物品的正确处理',
                'content': '''破损物品的分类处理需要特别注意安全和环保：

**玻璃制品：**
- 完整玻璃瓶 → 可回收垃圾
- 破碎玻璃 → 其他垃圾
- 处理时用纸包裹，避免伤人
- 大块玻璃联系专业回收

**陶瓷制品：**
- 完整陶瓷 → 可捐赠或二手交易
- 破损陶瓷 → 其他垃圾
- 小心包装，防止划伤
- 可用作花盆排水层

**金属制品：**
- 完整金属 → 可回收垃圾
- 生锈严重 → 其他垃圾
- 尖锐边缘需包装处理
- 大件金属联系回收站

**电器设备：**
- 可维修 → 送修或捐赠
- 无法维修 → 有害垃圾
- 拆解有用部件
- 联系专业回收机构

**安全提醒：**
处理破损物品时戴手套，避免受伤，妥善包装防止伤及他人。''',
                'category': '其他垃圾',
                'image_url': '',
                'author_id': admin_user.id
            },
            
            # 环保知识类别
            {
                'title': '垃圾分类的环保意义',
                'content': '''垃圾分类是环境保护的重要举措，具有深远的环保意义：

**减少环境污染：**
- 有害垃圾单独处理，避免土壤和水源污染
- 减少垃圾填埋场的环境压力
- 降低焚烧产生的有害气体排放

**资源循环利用：**
- 可回收垃圾重新加工利用
- 厨余垃圾制成有机肥料
- 减少对原生资源的开采需求

**节约处理成本：**
- 提高垃圾处理效率
- 降低处理设施运营成本
- 延长填埋场使用寿命

**促进可持续发展：**
- 培养公众环保意识
- 推动循环经济发展
- 为子孙后代留下更好的环境

**个人行动建议：**
1. 从源头减少垃圾产生
2. 正确分类投放垃圾
3. 选择环保产品
4. 参与环保宣传活动

让我们共同努力，为建设美丽中国贡献力量！''',
                'category': '环保知识',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '循环经济与垃圾分类',
                'content': '''垃圾分类是循环经济的重要组成部分，推动资源的高效利用：

**循环经济原理：**
- 减量化（Reduce）：源头减少废物产生
- 再利用（Reuse）：延长产品使用寿命
- 再循环（Recycle）：废物资源化利用

**垃圾分类的作用：**
- 提高回收效率和质量
- 降低处理成本
- 减少环境污染
- 创造就业机会

**成功案例：**
- 日本：垃圾分类细化到几十种
- 德国：押金制度促进回收
- 瑞典：垃圾发电技术先进
- 新加坡：垃圾减量成效显著

**经济效益：**
- 回收1吨废纸节约3.3立方米木材
- 回收1吨废钢铁节约2吨铁矿石
- 回收1吨废塑料相当于节约6吨石油

**发展趋势：**
智能分类、生物处理、能源回收等技术不断进步，垃圾分类将更加高效环保。''',
                'category': '环保知识',
                'image_url': '',
                'author_id': admin_user.id
            },
            {
                'title': '绿色生活方式指南',
                'content': '''践行绿色生活方式，从垃圾分类开始，建设美丽家园：

**绿色消费：**
- 选择环保产品和包装
- 支持本地和有机食品
- 减少过度包装商品
- 理性消费，避免浪费

**绿色出行：**
- 优先选择公共交通
- 步行或骑行短距离出行
- 合理规划出行路线
- 支持新能源汽车

**绿色居住：**
- 节约用水用电
- 垃圾分类投放
- 绿色装修材料
- 室内植物净化空气

**绿色办公：**
- 无纸化办公
- 节约办公用品
- 绿色通勤方式
- 办公垃圾分类

**绿色饮食：**
- 减少食物浪费
- 选择当季食材
- 适量肉类消费
- 自带餐具减少一次性用品

**行动倡议：**
每个人的小行动汇聚成保护地球的大力量，让我们共同创造绿色未来！''',
                'category': '环保知识',
                'image_url': '',
                'author_id': admin_user.id
            }
        ]
        
        # 插入数据
        success_count = 0
        for article_data in knowledge_articles:
            try:
                article = KnowledgeArticle(**article_data)
                db.session.add(article)
                success_count += 1
            except Exception as e:
                print(f"插入文章 '{article_data['title']}' 失败: {e}")
                continue
        
        try:
            db.session.commit()
            print(f"\n成功插入 {success_count} 条科普知识数据！")
            
            # 显示统计信息
            categories = db.session.query(KnowledgeArticle.category, 
                                        db.func.count(KnowledgeArticle.id)).group_by(KnowledgeArticle.category).all()
            print("\n各分类文章数量：")
            for category, count in categories:
                print(f"  {category}: {count} 篇")
                
        except Exception as e:
            db.session.rollback()
            print(f"提交数据失败: {e}")

if __name__ == '__main__':
    print("垃圾分类科普知识数据初始化脚本")
    print("=" * 40)
    init_knowledge_data()
    print("\n初始化完成！")